XSLT چيست ؟ (3)





بررسی روند شکل گيری XSLT و جايگاه آن بعنوان يک زبان برنامه نويسی

روند شکل گيری XSLT

XSLT ، نظير ساير اعضاء خانواده بزرگ استاندارهای XML، توسط کنسرسيوم وب پياده سازی شده است. جزئيات مربوط به شکل گيری استاندارد فوق، در آدرس http://www.w3.org/style/History قابل استفاده است. پيشنهاد اوليه ، برای استاندارد فوق در تاريخ بيست ويکم اگوست سال 1997 ارائه گرديد ( http://www.w3.org/TR/NOTE-XSL.html ) . برای ارائه استاندارد فوق، از وجود يازده متخصص استفاده گرديد . ( پنج نفر از شرکت ماکروسافت ، سه نفر از شرکت Inso، يک نفر از شرکت ArborText ، يک نفر از دانشگاه ادينبورگ و James Clark ، که برای خود کار می کرد) .
XSL ،يک زبان Stylesheet است که توسط کميته وب طراحی شده است . قابليت های استاندارد فوق ، بمراتب بيشتر از CSS است ( مثلا" قابليت ذخيره سازی المان ها ) . همانگونه که قبلا" اشاره گرديد، CSS بمنظور نمايش سندهای XML با ساختار ساده مناسب می باشد. XSL ، دارای قابليت های بمراتب بيشتری در رابطه با فرمت مورد نياز برای قالب دهی اطلاعات ساختيافته ، (نظير يک ساختمان داده XML ) می باشد . پياده کنندگان استاندارد XSL ، در زمان طراحی تکنولوژی فوق ، سه محور اساسی را مورد توجه قراردادند :
• يک زبان نشانه گذاری با تاکيد بر يک گرامر تعريفی
• امکان استفاده از اسکريپت های خاص بمنظور انجام عمليات پيچيده
• امکان استفاده بعنوان يک زبان برنامه نويسی کامل
اهداف طراحی XSL بشرح زير است :
• XSL ، می بايست براحتی از طريق اينترنت قابل استفاده باشد.
• XSL ، می بايست همراه با گرامر XML ارائه شود
• XSL ، می بايست يک زبان تعريفی بمنظور انجام عمليات رايج در رابطه با فرمت دهی باشد.
• XSL ، می بايست امکان استفاده از يک زبان اسکريپت را بمنظور افزايش توان عملياتی فراهم نمايد .
• XSL ، می بايست امکان تطبيق يک CSS را به يک XSL stylesheet فراهم نمايد .
• قابليت استفاده آسان از XSL ، برای کاربرانی که دارای تجربه لازم در رابطه با زبان FOSI می باشند .
• تعداد ويژگی انتخابی در XSL ، می بايست حداقل مقدارممکن را دارا باشد .
• Stylesheet های نوشته شده بکمک XSL ، می بايست خوانائی مطلوبی را داشته باشند .
• طراحی XSL ، می بايست بسرعت انجام شود .
• ايجاد stylesheet بکمک XSL ، می بايست بسادگی انجام شود .
زبان ارائه شده در اولين پيشنهاد ، دارای اغلب مفاهيم کليدی XSLT است ، که در نهايت ارائه گرديد . بمنظور طراحی گرامر زبان فوق از رويکرد مبتنی بر تمپليت استفاده گرديد . بدين ترتيب امکان برخورد با گره ها ی موجود در سند مبداء و تطبيق آنها با يک الگوی تعريف شده ، فراهم می گردد . عدم وجود اثرات جانبی و امکان تفسير و برخورد با سندهای با حجم بالا ، از ديگر مواردی است که در زمان طراحی XSL به آنها توجه جدی گرديد . برآيند تمام تلاش های فوق، عرضه اولين نسخه پيشنهادی XSLT در سال 1998 بود . زبان پيشنهادی در سال 1999 ،بصورت حرفه ای مطرح و مورد استفاده قرار گرفت .

XSLT بعنوان يک زبان

XSLT ، دارای چه ويژگی منحصربفردی است که آن را بعنوان يک زبان برنامه نويسی از ساير زبان ها متمايزمی نمايد ؟ در اين بخش به سه مورد اساسی اشاره خواهد گرديد : استفاده از گرامر مبتنی بر XML ، عدم وجود تاثيرات جانبی و پردازش مبتنی بر مجموعه ای از قوانين

استفاده از گرامر مبتنی بر XML

همانگونه که قبلا" اشاره گرديد ، استفاده از گرامر SGML برای Stylesheet از سال 1994 مطرح شده بود . ايده استفاده از SGML در اين زمينه ، دارای مشکلات خاص خود است . بمنظور عرضه stylesheet در XSLT ، از گرامر مبتنی بر XML استفاده می شود . رويکرد فوق دارای مزايای زير است :
• از مزيت وجود يک پارسر XML در مرورگرها ، استفاده خواهد کرد .
• اغلب افراد از عدم وجود يک گرامر همگن و سازگار بين HTML ، XML و CSS گلايه داشته و تمايلی به تکرار آن با يک گرامر جديد ندارند .
• اکثر زبان های مبتنی بر تمپليت در حا ل حاضر، بعنوان يک outline از سند خروجی بوده که با دستورالعمل هائی نيز همراه می باشند و از اين نظر مفهوم فوق ، کاملا" شناخته شده است .
• با استفاده از ابزارهای ويژوال موجود ، امکان ايجاد اين نوع سندها براحتی وجود داشته و نيازی به تايپ نخواهد بود .
• حمايت از يونيکد
• ضرورت استفاده از يک Stylesheet بعنوان ورودی و يا خروجی در زمان تبديل ، بدفعات احساس خواهد شد( سيستم تبديل ) . اين ويژگی که يک stylesheet قادر به خواندن و نوشتن ساير Stylesheet ها باشد ، يک مزيت تلقی می گردد .

اثرات جانبی

يکی از اهداف اوليه در رابطه با طراحی XSLT ، عدم بروز اثرات جانبی در زمان استفاده از آن است . يک تابع و يا برنامه جانبی در صورتيکه باعث ايجاد تغييرات در محيط مربوط بخود شوند ، دارای اثرات جانبی خواهند بود. مثلا" تابعی که باعث تغيير مقدار يک متغير سراسری مورد استفاده ساير توابع می گردد ، دارای اثرات جانبی بوده و می تواند در عملکرد ساير توابعی که از مقدار متغير فوق استفاده می نمايند ، تاثيری منفی را بدنبال داشته باشد. بديهی است توابعی که دارای اثرات جانبی می باشند، می بايست بدفعات مشخص و با يک نظم و اولويت خاص بخدمت گرفته شوند ( فراخوانی ). مثلا" در صورتيکه تابعی برای محاسبه محيط يک مثلث نوشته شده باشد که دارای اثرات جانبی نيست ، می توان با خيال آسوده تابع فوق را بدفعات استفاده و همواره انتظار عملکرد يکسانی را نيز از آن داشته باشيم ( محاسبه محيط مثلث با توجه به پارامترهای مربوطه ) . در صورتيکه تابع فوق دارای اثرات جانبی باشد ، (مثلا" تغيير اندازه اضلاع مثلث) استفاده از آن بدفعات بسيار محدود ( يک مرتبه) منطقی بوده و در صورت تکرار در استفاده از چنين تابعی ، نبايد انتظارعملکردی مثبت از آن را داشته باشيم . در صورتيکه زبانی دارای اثرات جانبی باشد، اولويت اجرای دستورالعمل ها در آن می بايست، بدرستی مشخص شود .در زبان هائی که دارای اثرات جانبی نمی باشند ، امکان اجرای دستورالعمل ها با هر اولويتی وجود خواهد داشت . اين بدان معنی است که می توان بخش هائی از يک Stylesheet انتخابی را بصورت مستقل اجراء نمود . XSLT زبانی مناسب در اين رابطه بوده و با توجه به انتظارات موجود در رابطه با اسناد ورودی ، پتانسيل های لازم را بدون وجود اثرات جانبی ، در اختيار استفاده کنندگان قرار می دهد .
زبان انتخابی ، می بايست برای استفاده در موارد batch و محاوره ای مناسب باشد . زمانيکه يک سند XML با ظرفيت بالا ، از سرويس دهنده ای اخذ می گردد ، ماداميکه آخرين بايت آن از سرويس دهنده دريافت نگردد، امکان مشاهده هيچ چيزی وجود نخواهد داشت . در صورت اعمال تغييرات اندک در يک سند XML ، انتظار داريم که اثر تغييرات انجام شده در رابطه با نمايش سند را سريعا" مشاهده نمائيم . . در اين رابطه لازم است به اين نکته نيز اشاره گردد که تعيين بخشی از سند خروجی که متاثر از تغييرات اندکی در يک بخش از سند ورودی است ، عملی ساده نخواهد بود . تمام پردازنده های XSLT ، نيازمند استقرار کامل سند XML در حافظه ، قبل از انجام هر گونه عملياتی می باشند . مورد فوق يکی از چالش های اصلی XSLT در مواجهه با سندهای XML با حجم بالا است .

XSLTمبتنی بر قوانين است

يک XSLT Stylesheet ، شامل مجموعه ای از قوانين مبتنی بر تمپليت است . هر يک از تمپليت ها ، نحوه پردازش يک المان خاص را مشخص خواهند کرد . قوانين با يک نظم و اولويت خاص سازماندهی نشده و ضرورتی به رعايت اولويت و نظم در ورودی و يا خروجی نخواهند بود . زمانيکه XSLT ، بعنوان يک زبان تعريفی در نظر گرفته می شود، می توان گفت که : " زمانيکه الگوهای خاصی در سند مبداء پيدا گرديد ، چه نوع اطلاعاتی و به چه صورت می بايست در خروجی ارائه شود."
ساختار مبتنی بر قوانين ، بسيار مشابه CSS است . نحوه برخورد با الگوها در CSS و XSLT کاملا" متفاوت است . مثلا" در CSS عنوان می شود که قانون تعريف شده در رابطه با کدام گره می بايست اعمال گردد ، در صورتيکه در XSLT مشخص می شود که در زمان يافتن يک الگوی مشخص شده در سند مبداء ، چه عملياتی می بايست انجام شود.

چه زمانی می بايست از XSLTاستفاده کرد ؟

استفاده از XSLT در موارد زير پيشنهاد می گردد :
• برنامه های تبديل داده . زمانيکه قصد تبديل يک مجموعه داده مبتنی بر XML را به فرمت ديگر XML داشته باشيم ، XSLT گزينه ای مناسب خواهد بود . با استفاده از XSLT ، می توان عمليات متفاوتی نظير انتخاب داده هائی خاص از يک سند XML ، ذخيره سازی داده های مورد نظر و موارد متنوع ديگری را انجام داد . از XSLT می توان بمنظور معتبر سازی داده ها نيز استفاده کرد . XSLT ، بعنوان يک زبان برنامه نويسی، گزينه ای مناسب برای انجام پردازش های لازم در خصوص ساختار اطلاعاتی است که از محتويات مربوط جدا شده اند . از XSLT می توان در رابطه با تبديل يک سند XML به فرمت های مبتنی بر متن نيز استفاده کرد . ( مثلا" اطلاعات متنی که توسط ويرگول از هم جدا شده اند ) . يکی ديگر از ويژگی های جالب XSLT ، امکان استفاده از آن در رابطه با تبديل يک سند غيره XML به يک سند XML و يا ساير فرمت های دلخواه ديگر است . در اين مورد خاص، لازم است که يک نوع پارسر بمنظور تشخيص فرمت داده های ورودی نوشته گردد . پس از نوشتن پارسر، عمليات تبديل ، توسط يک زبان سطح بالا ميسر می گردد .
• نشر اطلاعات . تفاوت بين تبديل و نشر اطلاعات به مقصد داده ها بر می گردد . در موارديکه تبديل صورت می پذيرد، مقصد داده های تبديل شده يک نرم افزار ديگر بوده در صورتيکه در زمان نشر ، کاربران (انسان) مقصد نهائی اطلاعات می باشند. تبديل با نمايش و تبديل بدون نمايش گزينه هائی متفاوت بمنظور شناخت مفهوم نشر اطلاعات است . در زمان نشر اطلاعات، نياز به ارائه آنان بر روی کاغذ ( چاپ ) و يا وب خواهد بود . نشر اطلاعات بر روی کاغذ، مستلزم عمليات بمراتب پيچيده تری خواهد بود . در اين حالت خاص ، کاربران دارای انتظار بالائی در رابطه با کيفيت می باشند. XSL FO ، امکانی بمنظور تعريف يک مدل مبتنی بر XML از يک فايل چاپی بمنظور نمايش با کيفيت بالا بر روی صفحات نمايشگر و يا کاعذ است . نشر اطلاعات بر روی وب دارای چالش های بمراتب کمتری نسبت به کاغذ است . در اين مدل خاص، صرفا" می بايست داده ها به Html تبديل و در ادامه مرورگرها مسئوليت ارائه اطلاعات را با فرمت تعريف شده بر عهده خواهند گرفت . تبديل يک سند XML به Html ، يکی از متداولترين کاربردهای XSLT در حال حاضر است . در اين رابطه دو مرحله عمليات دنبال خواهد شد : در اولين مرحله، داده ها به يک مدل مبتنی بر XML که از لحاظ ساختاری شباهت زيادی را با سند Html مقصد دارد ، تبديل و در دومين مرحله ، ساختار مشخص شده ، با تاکيد بر امکانات Html نمايش داده خواهد شد .
منبع:http://article.mjsoft.ir